#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : dateProcess.py
# @Author: shadow
# @Date  : 2019/12/18
# @Desc  :

"""
作业内容如下：
1 编写一个Python函数，用于计算一个数字(非负整数)的阶乘。函数接受数字作为参数
2 编写一个Python函数，该函数将一个数字作为参数，并检查该数字是否为素数(返回True or False)
3 编写一个Python函数，检查传递的字符串是否回文。
"""
from functools import reduce

def num_factorial(num: int):    # 阶乘 eg:24 = 1x2x3x4
    if num <= 0:
        return -1   # error
    return reduce(lambda x, y: x*y, range(1, num+1))


def is_prime(num: int):  # 素数判断：大于1 且只能被自己和1整除 eg: 2,3,5,7,11,13...
    """
    :param num: int
    :return: if num is prime return True,otherwise False
    """
    if num <= 1:
        return False
    # for i in range(2, int(sqrt(num)) + 1):
    #     if num % i == 0:
    #         return False
    # else:
    #     return True
    return False if [p for p in range(2, int(num**0.5) + 1) if num % p == 0] else True


def is_palindrome(src: str):  # 回文判断：对称 eg: abcba
    """
        :param src: str
        :return: if src is palindrome return True,otherwise False
        """
    if not isinstance(src, str): return False
    # for i in range(len(src)//2):
    #     if src[i] != src[-1-i]:
    #         return False
    # else:
    #     return True
    return src == src[::-1]



if __name__ == '__main__':
    print(num_factorial(5))
    print(is_prime(13))
    print(is_palindrome("123213"))
    # 古德 奈斯~